import axios from "axios";

import { useUserStore } from "@/stores";
// import { ElMessage } from "element-plus";
import router from "@/router";
const baseURL = 'http://big-event-vue-api-t.itheima.net'

const instance = axios.create({
    // 基础地址  超时时间
    baseURL,
    timeout: 10000
})
// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 携带token
        const userStore = useUserStore()
        // 如果token存在
        if (userStore.token) {
            // 发送请求  携带上token
            config.headers.Authorization = userStore.token
        }
        return config;
    }, function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
    });

// 响应拦截器
instance.interceptors.response.use((res) => {


    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    if (res.data.code === 0) {
        return res
    }
    // 处理业务失败，给错误提示，抛出错误
    ElMessage.error(res.data.message || '服务异常')
    // alert(res.data.message || '服务异常')
    return Promise.reject(res.data)

}, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么

    // 错误特殊情况 =》401  权限不足 或 token过期  =》 拦截到登录
    if (error.response?.status === 401) {
        router.push('/login')
    }

    // 错误默认情况
    ElMessage.error(error.response.data.message || '服务异常')
    return Promise.reject(error);
});
// 明确导出实例
export default instance;  // 添加这行导出语句
export { baseURL }